package com.wongsi.spring5.repository;

import com.wongsi.spring5.entity.Order;
import org.springframework.data.repository.CrudRepository;

import java.util.Date;
import java.util.List;

/**
 * Spring Data解析repository方法签名来确定要执行的查询
 *
 * repository方法是由一个动词、一个可选的主题（Subject）、关键词By以及一个断言所组成的。
 *
 * get、read和find视为同义词，它们都是用来获取一个或多个实体的。
 * count作为动词，它会返回一个int值，代表匹配实体的数量。

 */
public interface JpaOrderRepository extends CrudRepository<Order, Long> {

    // 在findByDeliveryZip()这个样例中，
    // 动词是find，断言是DeliveryZip，主题并没有指定，暗含的主题是Order。
    List<Order> findByDeliveryZip(String deliveryZip);

    List<Order> readOrdersByDeliveryZipAndPlacedAtBetween(
        String deliveryZip, Date startDate, Date endDate);
}
